A storage server is a special purpose processing system used to store and retrieve data on behalf of one or more clients on a network. A storage server operates on behalf of one or more storage clients to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based disks or tapes. The mass storage devices can be organized into one or more groups of disks (e.g., redundant array of inexpensive disks (RAID)).
A storage server can include multiple modules, as depicted in FIG. 1A. The storage server can include a data module 10, a network module 12, and a management module 14, which communicate with each other over a physical interconnect 16. An “integrated” storage server is a storage server which includes at least the functionality of a network module, the functionality of a data module, and certain management module functionality, in one physical system.
The main purpose of the network module is to provide an interface to a storage client 18 (or multiple storage clients) for purposes of receiving data access requests (e.g., read and write requests) from the storage client 18 and transmitting responses to those requests to this storage client 18. The network module can include functionality for translating between one or more protocols used by the storage client 18 and an internal protocol used by the storage server.
The main purposes of the data module are to provide an interface to storage media 20, to control data layout on the storage media, and to respond to client-initiated read and write requests. The data module can also include other functionality, such as creating a backup, a mirror image or a snapshot of stored data. Functions of the data module, which can include functions not mentioned here, are referred to collectively and individually as “data module functionality”.
The main purpose of the management module is to interface with a network administrator to allow the network administrator to control various management and administrative functions of the storage server. Functions of the management module, which can include functions not mentioned here, are referred to collectively and individually as “management module functionality”.
A first example integrated storage server includes the above functionality in a single kernel executing on a single system. The first example integrated storage server provides a single command line interface at the data module that receives user commands for execution on the storage server.
A second example integrated storage server includes at least a management module and a data module executing on a single system. The second example integrated storage server provides a command line interface at the management module for receiving user commands for execution on the storage server.
The storage server can alternatively have a distributed architecture. Multiple modules can execute on multiple physical systems, all communicating with each other over a network. Such an architecture allows convenient scaling, such as by adding multiple instances of these modules and new systems when additional storage server capacity is required.
Various problems are associated with a conventional distributed storage server architecture such as this. For example, the management module normally provides the only management/administrative user interface to the storage server. However, in certain instances a network administrator accessing the management module (e.g., from a management client) may want to execute a data user command (i.e., a command for invoking data module functionality) at the distributed storage server. However, a conventional management module does not provide data module functionality, and to modify the management module to provide such data functionality at the management module would require significant design changes to the management module, which can be costly.
In another example, the integrated storage server can be adapted or reconfigured to allow it to be used as part of a distributed storage server as a data module. It may be desirable to do this, for example, in order to prolong the useful life of an integrated storage server when its capabilities are no longer adequate for the current capacity or performance needs of a storage system. For example, it may be desirable to migrate or reconfigure a storage system from an integrated architecture to a larger, more-scalable distributed architecture.
In that regard, at least one known integrated storage server can be reconfigured so that only some of its functionality is used, namely, its data module functionality. Such reconfiguration essentially allows the integrated storage server to be used as a data module in a distributed architecture such as described above.
One problem with this usage model, however, is that an administrator accessing the integrated storage server, now functioning only as a data module, may want to transmit a management user command (i.e., a command for invoking management module functionality) to the integrated storage server. However, the data module does not provide this functionality, and modifying it to do so would require significant design changes, which can be costly.
To summarize, therefore, in a distributed storage server architecture there can be problems enabling a user to access certain functionality from certain modules. In particular, there can be problems enabling a user to access data module functionality when the user only has access to a management module, or allowing a user to access management module functionality when the user only has access to a data module.